package com.boxing;

import com.boxing.beans.Result;
import com.boxing.beans.User;
import com.boxing.servlet.BaseServlet;
import com.boxing.utils.Contants;
import com.google.gson.Gson;
import com.sun.source.util.DocSourcePositions;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.util.UUID;

public class Login {

    public void login(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        byte[] bytes = req.getInputStream().readAllBytes();
        String params = new String(bytes, "utf-8");
        // 对参数进行解析
        Gson gson = new Gson();
        User user = gson.fromJson(params, User.class);
        // 去数据库里验证用户名密码是否合法 jdbc sql
        Result result;
        if ("zhangsan".equals(user.getEmail()) && "123".equals(user.getPsd())){
            // 允许登录  跳转到首页
            // 服务器端生成cookie
            String value = UUID.randomUUID().toString();
            Cookie token = new Cookie(Contants.COOKIE_TOKEN, value);
            token.setHttpOnly(true);
            // 设置token的有效期，浏览器会从获取到token时开始计算，时间就是参数，单位秒
            token.setMaxAge(5*60);

            // 第一种方式 使用 servletContext 存储token
//            servletContext.setAttribute(value, "zhangsan");

            // 第二种方式 使用session 存储 token
            HttpSession session = req.getSession(true);
            session.setAttribute(value, "zhangsan");
            // 设置session有效时间间隔
            session.setMaxInactiveInterval(5*60);

            resp.addCookie(token);
            resp.addCookie(new Cookie("a","b"));
            result = new Result(200, "登录成功");
        }else {
            result = new Result(600, "登录失败");
        }
        resp.getWriter().print(gson.toJson(result));
    }
}
